<?php
function bubbleSort($ary){
    $len = count($ary);
    for ($i=0; $i < $len - 1; $i++) {
        for ($j=0; $j < $len - 1 -$i; $j++) {
            if ($ary[$j] > $ary[$j + 1]) {
                $tmp = $ary[$j];
                $ary[$j] = $ary[$j + 1];
                $ary[$j + 1] = $tmp;
            }
        }
    }
    return $ary;
}

$ary = [1,6,789,3,56,8,1234,45];
$newAry = bubbleSort($ary);
print_r($newAry);

?>



<meta charset="gb2312"/>
<?PHP
//数组元素值从小到大排序
$arr = array(1, 42, 0, 3, 15, 7, 19, 26);
foreach ($arr as $k => $v)
    echo " index:$k -- value:$v<br>";

echo "<hr color=red />";
echo "After applying sort() <br>";
$ar = $arr;
//定义一个中间变量
sort($ar);
print_r($ar);

echo '<br><hr color=red />';
echo "使用 冒泡排序";
$temp = 0;
//外层循环的次数
for ($i = 0; $i < count($arr) - 1; $i++) {
    $exchange = false;
    //内层之间向右相邻的两个数组元素值进行比较
    for ($j = 0; $j < count($arr) - 1 - $i; $j++) {
        //当后一个数组元素值大于前一个数组原数值
        if ($arr[$j] > $arr[$j + 1]) {
            //数组元素交换
            $temp = $arr[$j];
            $arr[$j] = $arr[$j + 1];
            $arr[$j + 1] = $temp;
            $exchange = true;
        }

    }
    //外层数组循环的次数是---count($arr)-1
    //-1的原因(数组元素值比较时是两个比较
    //如3个数组元素比较2次
    echo "这是第" . ($i + 1) . "次比较的结果";
    echo "<pre/>";
    print_r($arr);
    echo "<pre/>";
    if (!$exchange)
        break;
}
echo "<hr color=red />";
echo "<pre/>";
print_r($arr);
echo "<pre/>"

?>
